Fix compilation errors due to insufficient compiler safety (bug#63288)
authorPip Cet <pipcet@protonmail.com>
Mon, 17 Feb 2025 15:21:16 +0000 (15:21 +0000)
committerEli Zaretskii <eliz@gnu.org>
Tue, 1 Apr 2025 11:21:10 +0000 (14:21 +0300)
The default safety level is 1.  Restoring the default safety level to
1 after it was temporarily 0 should reset byte-compile-delete-errors
to nil, its default level.  Failing to do that resulted in
miscompilation of code in highly-parallel builds.

* lisp/emacs-lisp/cl-macs.el (cl--do-proclaim): Change
'byte-compile-delete-errors' to become t only at 'safety' level 0, not
levels 1 or 2.

(cherry picked from commit 53a5dada413662389a17c551a00d215e51f5049f)

lisp/emacs-lisp/cl-macs.el

index 8caf2f1eac0c1222844dcc0a98c5e6777a0bc43b..2a0a9e5c6de1937eca56c639f922e576531ea3ad 100644 (file)
@@ -2670,7 +2670,7 @@ Example:
         (let ((speed (assq (nth 1 (assq 'speed (cdr spec)))
                            '((0 nil) (1 t) (2 t) (3 t))))
               (safety (assq (nth 1 (assq 'safety (cdr spec)))
-                            '((0 t) (1 t) (2 t) (3 nil)))))
+                            '((0 t) (1 nil) (2 nil) (3 nil)))))
           (if speed (setq cl--optimize-speed (car speed)
                           byte-optimize (nth 1 speed)))
           (if safety (setq cl--optimize-safety (car safety)